Įvaldykite Google Cloud Platform (GCP) paslaugų prieigą naudodami Python kliento biblioteką. Sužinokite apie autentifikavimą, paslaugų sąveiką ir geriausią praktiką kuriant mastelio keitimo debesų programas visame pasaulyje.
Google Cloud Platform atrakinimas su Python: išsamus GCP paslaugų prieigos vadovas
Google Cloud Platform (GCP) siūlo platų paslaugų spektrą, skirtą kurti ir diegti mastelio keičiamas ir patikimas programas. Python, su savo aiškia sintakse ir plačiomis bibliotekomis, yra populiarus pasirinkimas sąveikai su GCP. Šis vadovas pateikia išsamią apžvalgą, kaip naudoti Python kliento biblioteką norint pasiekti ir valdyti GCP paslaugas, pritaikytas pasaulinei auditorijai su įvairia technine patirtimi.
Kodėl verta naudoti Python su GCP?
Python siūlo keletą pranašumų sąveikai su GCP:
- Lengva naudoti: Python skaitoma sintaksė supaprastina kūrimą, todėl lengviau išmokti ir prižiūrėti GCP programas.
- Išsamios bibliotekos: Google teikia gerai prižiūrimą Python kliento biblioteką, specialiai sukurtą GCP paslaugoms.
- Stiprus bendruomenės palaikymas: didelė ir aktyvi Python bendruomenė teikia daug išteklių, mokymo programų ir palaikymą GCP kūrimui.
- Automatizavimas ir scenarijų rašymas: Python puikiai tinka automatizuoti užduotis ir scenarijų infrastruktūros valdymą, o tai yra labai svarbu debesų aplinkoje.
- Duomenų mokslas ir mašininis mokymasis: Python yra duomenų mokslo ir mašininio mokymosi kalba, kuri sklandžiai integruojama su GCP AI/ML paslaugomis.
Aplinkos nustatymas
Prieš pradėdami, turėsite nustatyti savo Python aplinką ir įdiegti reikiamas bibliotekas.
1. Įdiekite Python ir Pip
Jei neturite įdiegę Python, atsisiųskite ir įdiekite naujausią versiją iš oficialios Python svetainės (https://www.python.org/downloads/). Pip, Python paketų diegimo programa, paprastai įtraukiama į Python diegimus.
Patikrinimas: atidarykite terminalą arba komandinę eilutę ir vykdykite šias komandas:
python --version
pip --version
Šios komandos turėtų parodyti įdiegtas Python ir Pip versijas.
2. Įdiekite Google Cloud kliento biblioteką, skirtą Python
`google-cloud-python` biblioteka suteikia prieigą prie visų GCP paslaugų. Įdiekite ją naudodami Pip:
pip install google-cloud-storage google-cloud-compute google-cloud-pubsub # Pavyzdys – įdiekite storage, compute ir pubsub paketus
Įdiekite tik konkrečias klientų bibliotekas GCP paslaugoms, kurias ketinate naudoti. Tai sumažina jūsų programos priklausomybių dydį.
Pavyzdys (Cloud Storage): Norėdami įdiegti Cloud Storage kliento biblioteką:
pip install google-cloud-storage
3. Konfigūruokite autentifikavimą
Autentifikavimas yra labai svarbus suteikiant jūsų Python programai leidimą pasiekti GCP išteklius. Yra keletas galimų autentifikavimo metodų:
- Paslaugų paskyros: rekomenduojama programoms, veikiančioms GCP (pvz., Compute Engine, Cloud Functions, Cloud Run).
- Vartotojo kredencialai: tinka vietiniam kūrimui ir testavimui.
Paslaugų paskyrų naudojimas (rekomenduojama gamybai)
Paslaugų paskyros yra ne žmonių paskyros, kurias galima naudoti programoms ir paslaugoms autentifikuoti. Jie suteikia saugų ir kontroliuojamą būdą suteikti prieigą prie GCP išteklių.
- Sukurkite paslaugų paskyrą: Google Cloud Console eikite į IAM ir administratorius > Paslaugų paskyros ir spustelėkite Sukurti paslaugų paskyrą. Nurodykite savo paslaugų paskyros pavadinimą ir aprašą.
- Suteikite leidimus: priskirkite atitinkamus vaidmenis savo paslaugų paskyrai, atsižvelgdami į GCP išteklius, kuriuos turi pasiekti jūsų programa (pvz., `roles/storage.objectAdmin`, kad galėtumėte visiškai valdyti Cloud Storage objektus).
- Atsisiųskite paslaugų paskyros raktą: sukurkite JSON rakto failą savo paslaugų paskyrai ir atsisiųskite jį. Elkitės su šiuo rakto failu itin atsargiai, nes jis suteikia prieigą prie jūsų GCP išteklių. Saugokite jį saugiai ir niekada neįtraukite į versijų kontrolę.
- Nustatykite aplinkos kintamąjį `GOOGLE_APPLICATION_CREDENTIALS`: nustatykite aplinkos kintamąjį `GOOGLE_APPLICATION_CREDENTIALS` į atsisiųsto JSON rakto failo kelią.
Pavyzdys (Linux/macOS):
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-key.json"
Pavyzdys (Windows):
set GOOGLE_APPLICATION_CREDENTIALS=C:\path\to\your\service-account-key.json
Svarbi saugumo pastaba: venkite įkoduoti savo paslaugų paskyros raktą tiesiai į kodą. `GOOGLE_APPLICATION_CREDENTIALS` aplinkos kintamojo naudojimas yra rekomenduojamas saugumo ir prižiūrimumo būdas.
Vartotojo kredencialų naudojimas (vietiniam kūrimui)
Vietiniam kūrimui ir testavimui galite naudoti savo Google Cloud vartotojo kredencialus.
- Įdiekite Google Cloud SDK (gcloud): atsisiųskite ir įdiekite Google Cloud SDK iš oficialios svetainės (https://cloud.google.com/sdk/docs/install).
- Autentifikuokite su gcloud: vykdykite šią komandą terminale arba komandinėje eilutėje:
gcloud auth application-default login
Ši komanda atidarys naršyklės langą, kuriame galėsite prisijungti prie savo Google Cloud paskyros ir suteikti reikiamus leidimus Google Cloud SDK.
GCP paslaugų pasiekimas su Python
Kai nustatėte savo aplinką ir sukonfigūravote autentifikavimą, galite pradėti pasiekti GCP paslaugas naudodami Python kliento biblioteką. Štai keletas pavyzdžių:
1. Cloud Storage
Cloud Storage suteikia mastelio keičiamą ir patvarią objektų saugyklą. Galite naudoti Python kliento biblioteką norėdami įkelti, atsisiųsti ir valdyti objektus savo Cloud Storage kaupuose.
Pavyzdys: failo įkėlimas į Cloud Storage
from google.cloud import storage
# Pakeiskite savo kaupo pavadinimu ir failo keliu
BUCKET_NAME = "your-bucket-name"
FILE_PATH = "/path/to/your/local/file.txt"
OBJECT_NAME = "remote/file.txt" # Pavadinimas, kurį norite suteikti failui Cloud Storage
client = storage.Client()
bucket = client.bucket(BUCKET_NAME)
blob = bucket.blob(OBJECT_NAME)
blob.upload_from_filename(FILE_PATH)
print(f"Failas {FILE_PATH} įkeltas į gs://{BUCKET_NAME}/{OBJECT_NAME}.")
Paaiškinimas:
- `from google.cloud import storage`: importuoja Cloud Storage modulį.
- `storage.Client()`: sukuria Cloud Storage kliento objektą, naudodamas anksčiau nustatytus autentifikavimo kredencialus.
- `client.bucket(BUCKET_NAME)`: gauna nuorodą į nurodytą Cloud Storage kaupą.
- `bucket.blob(OBJECT_NAME)`: sukuria blob (objektą) kaupe su nurodytu pavadinimu.
- `blob.upload_from_filename(FILE_PATH)`: įkelia failą iš vietinio failo kelio į Cloud Storage blob.
Pavyzdys: failo atsisiuntimas iš Cloud Storage
from google.cloud import storage
# Pakeiskite savo kaupo pavadinimu, objekto pavadinimu ir vietiniu failo keliu
BUCKET_NAME = "your-bucket-name"
OBJECT_NAME = "remote/file.txt"
FILE_PATH = "/path/to/your/local/downloaded_file.txt"
client = storage.Client()
bucket = client.bucket(BUCKET_NAME)
blob = bucket.blob(OBJECT_NAME)
blob.download_to_filename(FILE_PATH)
print(f"Failas gs://{BUCKET_NAME}/{OBJECT_NAME} atsisiųstas į {FILE_PATH}.")
2. Compute Engine
Compute Engine teikia virtualias mašinas (VM) GCP. Galite naudoti Python kliento biblioteką norėdami valdyti Compute Engine egzempliorius, įskaitant jų kūrimą, paleidimą, sustabdymą ir naikinimą.
Pavyzdys: Compute Engine egzempliorių sąrašo sudarymas
from google.cloud import compute_v1
# Pakeiskite savo projekto ID ir zona
PROJECT_ID = "your-project-id"
ZONE = "us-central1-a"
client = compute_v1.InstancesClient()
request = compute_v1.ListInstancesRequest(
project=PROJECT_ID,
zone=ZONE
)
# Atlikite užklausą
pager = client.list(request=request)
print("Egzemplioriai projekte ir zonoje:")
# Tvarkykite atsakymą
for response in pager:
print(response)
Paaiškinimas:
- `from google.cloud import compute_v1`: importuoja Compute Engine modulį (v1 versija). Apsvarstykite galimybę naudoti naujesnę versiją, jei ji yra prieinama.
- `compute_v1.InstancesClient()`: sukuria Compute Engine kliento objektą.
- `compute_v1.ListInstancesRequest()`: sukuria užklausą išvardyti egzempliorius nurodytame projekte ir zonoje.
- `client.list(request=request)`: siunčia užklausą į Compute Engine API.
- Tada kodas kartoja atsakymą (puslapio objektą) ir spausdina informaciją apie kiekvieną egzempliorių.
3. Cloud Functions
Cloud Functions teikia serverless vykdymo aplinką. Galite naudoti Python kliento biblioteką norėdami įdiegti ir valdyti Cloud Functions.
Pavyzdys: Cloud Function diegimas (reikalingas Google Cloud SDK)
Cloud Function diegimas dažnai apima tiesioginį Google Cloud SDK (gcloud) naudojimą, nors Cloud Functions API gali būti pasiekiamas per Python kliento biblioteką sudėtingesniems scenarijams. Šis pavyzdys parodo pagrindinę gcloud diegimo komandą. Pirmiausia sukurkite main.py ir requirements.txt:
main.py (pavyzdys)
def hello_world(request):
return 'Hello, World!'
requirements.txt (pavyzdys)
functions-framework
Diegimo komanda:
gcloud functions deploy your-function-name --runtime python310 --trigger-http --entry-point hello_world
Paaiškinimas:
- `gcloud functions deploy your-function-name`: diegia Cloud Function su nurodytu pavadinimu. Pakeiskite `your-function-name` norimu funkcijos pavadinimu.
- `--runtime python310`: nurodo Python vykdymo aplinką (pvz., python310, python311). Pasirinkite palaikomą vykdymo laiką.
- `--trigger-http`: konfigūruoja funkciją, kad ją suaktyvintų HTTP užklausos.
- `--entry-point hello_world`: nurodo funkciją, kurią reikia vykdyti, kai funkcija suaktyvinama. Tai atitinka funkciją `hello_world`, apibrėžtą `main.py`.
4. Cloud Run
Cloud Run leidžia jums įdiegti konteinerizuotas programas serverless aplinkoje. Galite valdyti Cloud Run paslaugas naudodami Python kliento biblioteką, tačiau diegimas dažnai atliekamas naudojant Google Cloud SDK arba infrastruktūros kaip kodo įrankius, tokius kaip Terraform.
Pavyzdys: Cloud Run paslaugos diegimas (reikalingas Google Cloud SDK ir Docker)
Cloud Run diegimai dažnai prasideda nuo Dockerfile.
Dockerfile (pavyzdys):
FROM python:3.10
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["gunicorn", "--bind", "0.0.0.0:8080", "main:app"]
main.py (pavyzdys) - Minimali Flask programa
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "Hello from Cloud Run!"
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0', port=8080)
requirements.txt (pavyzdys):
flask
gunicorn
Diegimo komandos:
# Sukurkite Docker vaizdą
docker build -t gcr.io/your-project-id/cloud-run-image .
# Nusiųskite vaizdą į Google Container Registry
docker push gcr.io/your-project-id/cloud-run-image
# Įdiekite Cloud Run paslaugą
gcloud run deploy your-cloud-run-service \
--image gcr.io/your-project-id/cloud-run-image \
--platform managed \
--region us-central1 \
--allow-unauthenticated
Paaiškinimas:
- `docker build`: sukuria Docker vaizdą iš Dockerfile. Pakeiskite `gcr.io/your-project-id/cloud-run-image` norimu vaizdo pavadinimu ir Google Container Registry keliu.
- `docker push`: įkelia Docker vaizdą į Google Container Registry (GCR). Turite sukonfigūruoti Docker autentifikavimą su GCR.
- `gcloud run deploy`: įdiegia Cloud Run paslaugą.
- `--image`: nurodo Docker vaizdą, kurį reikia naudoti paslaugai.
- `--platform managed`: nurodo, kad paslauga turi būti įdiegta visiškai valdomoje Cloud Run platformoje.
- `--region`: nurodo regioną, kuriame turėtų būti įdiegta paslauga.
- `--allow-unauthenticated`: leidžia nesertifikuotą prieigą prie paslaugos (bandymo tikslais). Gamybos aplinkoje turėtumėte sukonfigūruoti tinkamą autentifikavimą.
5. Cloud SQL
Cloud SQL teikia valdomas reliacines duomenų bazes GCP. Galite naudoti Python kliento biblioteką (kartu su duomenų bazei būdingomis bibliotekomis, tokiomis kaip `psycopg2`, skirtą PostgreSQL, arba `pymysql`, skirtą MySQL), kad prisijungtumėte prie Cloud SQL egzempliorių ir juos valdytumėte.
Pavyzdys: prisijungimas prie Cloud SQL PostgreSQL egzemplioriaus
import psycopg2
# Pakeiskite savo Cloud SQL egzemplioriaus ryšio pavadinimu, duomenų bazės pavadinimu, vartotojo vardu ir slaptažodžiu
INSTANCE_CONNECTION_NAME = "your-project-id:your-region:your-instance-name"
DB_NAME = "your_database_name"
DB_USER = "your_username"
DB_PASS = "your_password"
try:
conn = psycopg2.connect(
f"host=/cloudsql/{INSTANCE_CONNECTION_NAME} dbname={DB_NAME} user={DB_USER} password={DB_PASS}"
)
print("Sėkmingai prisijungta prie Cloud SQL!")
# Atlikite duomenų bazės operacijas čia (pvz., vykdykite užklausas)
cur = conn.cursor()
cur.execute("SELECT version();")
db_version = cur.fetchone()
print(f"Duomenų bazės versija: {db_version}")
except Exception as e:
print(f"Klaida jungiantis prie Cloud SQL: {e}")
finally:
if conn:
cur.close()
conn.close()
print("Ryšys uždarytas.")
Paaiškinimas:
- `import psycopg2`: importuoja `psycopg2` biblioteką, PostgreSQL adapterį, skirtą Python. Turėsite jį įdiegti naudodami `pip install psycopg2-binary`.
- `INSTANCE_CONNECTION_NAME`: tai labai svarbus identifikatorius, nurodantis, kaip prisijungti prie savo Cloud SQL egzemplioriaus. Šią reikšmę galite rasti Google Cloud Console savo Cloud SQL egzemplioriaus informacijoje.
- `psycopg2.connect()` funkcija užmezga ryšį su duomenų baze naudodama pateiktus parametrus.
- Tada kodas vykdo paprastą užklausą, kad gautų duomenų bazės versiją ir atspausdina ją konsolėje.
- `finally` blokas užtikrina, kad duomenų bazės ryšys būtų tinkamai uždarytas, net jei įvyksta klaidų.
Geriausia Python naudojimo su GCP praktika
Štai keletas geriausių praktikų, kurių reikia laikytis kuriant GCP programas su Python:
- Naudokite paslaugų paskyras: visada naudokite paslaugų paskyras autentifikavimui, ypač gamybos aplinkoje. Suteikite joms tik būtinus leidimus (mažiausio privilegio principas).
- Tvarkykite priklausomybes: naudokite `requirements.txt` failą norėdami valdyti savo programos priklausomybes. Tai užtikrina nuoseklius diegimus ir supaprastina priklausomybių valdymą.
- Tvarkykite klaidas: įdiekite tinkamą klaidų apdorojimą, kad sklandžiai tvarkytumėte išimtis ir išvengtumėte programų gedimų. Naudokite try-except blokus, kad aptiktumėte galimas klaidas ir jas užregistruotumėte, kad galėtumėte derinti.
- Efektyviai registruokite: naudokite GCP Cloud Logging paslaugą norėdami registruoti programų įvykius ir klaidas. Tai suteikia vertingų įžvalgų apie jūsų programos veikimą ir padeda šalinti triktis.
- Naudokite aplinkos kintamuosius: laikykite slaptą informaciją, pvz., API raktus ir duomenų bazės kredencialus, aplinkos kintamuosiuose. Tai apsaugo nuo jų įkodavimo kode ir pagerina saugumą.
- Optimizuokite našumą: naudokite talpyklą, asinchronines operacijas ir kitus optimizavimo būdus, kad pagerintumėte savo GCP programų našumą. Apsvarstykite galimybę naudoti GCP paslaugas, pvz., Cloud CDN, turinio pristatymui.
- Stebėkite savo programas: naudokite GCP Cloud Monitoring paslaugą norėdami stebėti savo programų būklę ir našumą. Nustatykite įspėjimus, kad būtumėte informuoti apie bet kokias problemas.
- Automatizuokite diegimus: naudokite infrastruktūros kaip kodo įrankius, tokius kaip Terraform, arba diegimo pipelines, kad automatizuotumėte diegimo procesą. Tai užtikrina nuoseklius ir pakartojamus diegimus.
- Pasirinkite tinkamą GCP paslaugą: pasirinkite tinkamą GCP paslaugą savo programos poreikiams. Atsižvelkite į tokius veiksnius kaip mastelio keitimas, kaina ir veiklos sudėtingumas. Pavyzdžiui, Cloud Functions puikiai tinka įvykių valdomoms užduotims, o Cloud Run idealiai tinka konteinerizuotų programų diegimui.
- Išvalykite išteklius: nepamirškite išvalyti visus nenaudojamus GCP išteklius, kad išvengtumėte nereikalingų išlaidų.
- Nuolat atnaujinkite bibliotekas: reguliariai atnaujinkite Python bibliotekas, kad galėtumėte pasinaudoti klaidų pataisymais, saugumo pataisomis ir naujomis funkcijomis. Naudokite `pip`, kad atnaujintumėte paketus: `pip install --upgrade
`. - Naudokite virtualias aplinkas: sukurkite virtualias aplinkas kiekvienam projektui, kad izoliuotumėte priklausomybes ir išvengtumėte konfliktų tarp skirtingų projektų.
Pasauliniai aspektai
Kuriant GCP programas pasaulinei auditorijai, apsvarstykite šiuos dalykus:
- Duomenų saugojimas: supraskite duomenų saugojimo reikalavimus savo tiksliniams regionams. Pasirinkite GCP regionus, atitinkančius šiuos reikalavimus.
- Latencija: sumažinkite latenciją diegdami savo programas regionuose, kurie geografiškai arti jūsų vartotojų.
- Lokalizavimas: lokalizuokite savo programos vartotojo sąsają ir turinį skirtingoms kalboms ir regionams.
- Valiuta ir mokėjimų apdorojimas: jei jūsų programa apima finansines operacijas, įsitikinkite, kad palaikote valiutas ir mokėjimo būdus, naudojamus jūsų tiksliniuose regionuose.
- Teisinis ir reguliavimo atitiktis: žinokite teisinius ir reguliavimo reikalavimus savo tiksliniuose regionuose, pvz., duomenų privatumo įstatymus (pvz., GDPR) ir eksporto kontrolę.
- Laiko zonos: tinkamai tvarkykite laiko zonas, kad užtikrintumėte, jog jūsų programa teisingai rodytų datas ir laikus vartotojams skirtingose vietovėse. Naudokite bibliotekas, tokias kaip `pytz`, kad tvarkytumėte laiko zonų konvertavimus.
- Kultūrinis jautrumas: būkite atidūs kultūriniams skirtumams kurdami savo programos vartotojo sąsają ir turinį.
Dažniausiai pasitaikančių problemų trikčių šalinimas
Štai keletas dažniausiai pasitaikančių problemų, su kuriomis galite susidurti naudojant Python su GCP, ir kaip jas pašalinti:
- Autentifikavimo klaidos: patikrinkite, ar jūsų paslaugų paskyros rakto failas yra galiojantis ir ar tinkamai nustatytas aplinkos kintamasis `GOOGLE_APPLICATION_CREDENTIALS`. Taip pat įsitikinkite, kad paslaugų paskyra turi reikiamus leidimus pasiekti GCP išteklius.
- Atmesti leidimo klaidos: dar kartą patikrinkite IAM vaidmenis, priskirtus jūsų paslaugų paskyrai arba vartotojo paskyrai. Įsitikinkite, kad jie turi reikiamus leidimus operacijai, kurią bandote atlikti.
- Importo klaidos: patikrinkite, ar įdiegėte reikiamas Python bibliotekas naudodami `pip`. Įsitikinkite, kad bibliotekų pavadinimai yra teisingi ir kad naudojate tinkamą versiją.
- Tinklo ryšio problemos: jei vykdote savo programą VM egzemplioriuje, įsitikinkite, kad VM turi tinklo ryšį su internetu ir GCP paslaugomis, kurias bandote pasiekti. Patikrinkite savo ugniasienės taisykles ir tinklo konfigūraciją.
- API greičio apribojimai: GCP API turi greičio apribojimus, kad būtų išvengta piktnaudžiavimo. Jei viršijate greičio apribojimus, galite susidurti su klaidomis. Įdiekite eksponentinį atsitraukimą arba talpyklą, kad sumažintumėte API iškvietimų skaičių.
Išvada
Python ir Google Cloud Platform suteikia galingą derinį, skirtą kurti ir diegti mastelio keičiamas, patikimas ir pasauliniu mastu prieinamas programas. Vadovaudamiesi šiame vadove pateiktomis gairėmis ir geriausia praktika, galite efektyviai panaudoti Python kliento biblioteką norėdami pasiekti ir valdyti GCP paslaugas, suteikdami jums galimybę kurti novatoriškus sprendimus pasaulinei auditorijai.
Nepamirškite visada teikti pirmenybę saugumui, optimizuoti našumą ir atsižvelgti į pasaulines savo programų pasekmes. Nuolatinis mokymasis ir eksperimentavimas yra raktas į debesų kūrimo su Python ant GCP meno įvaldymą.